Digital backed flash refresh

ABSTRACT

A method comprising the steps of responding to expiration of a timer, transmitting a signal from the timer to circuitry; responsive to receiving the signal, retrieving by the circuitry (i) first values stored in an analog array, and (ii) second values stored in a digital non-volatile memory; performing, by the circuitry, operations comprising a comparison of the first values and the second values; analyzing, by the circuitry, results of the comparison to determine whether an error is greater than or equal to a predefined threshold; responsive to determining the error is greater than or equal to the predefined threshold, initiating, by the circuitry, operations to reprogram the analog array with the second value is described.

PRIORITY

This application is a continuation of U.S. patent application Ser. No.16/104,788, filed Aug. 17, 2018, which claims the benefit of andpriority to U.S. Provisional Patent Application No. 62/547,007, filedAug. 17, 2017, both titled “Digital Backed Flash Refresh,” which areincorporated by reference herein in their entireties.

FIELD

Embodiments of the disclosure related to the field of neuromorphiccomputing. More specifically, embodiments of the disclosure relate tosystems and methods for reprogramming an analog array with values storedin a digital non-volatile memory device.

BACKGROUND

Traditional central processing units “CPUs” process instructions basedon “clocked time.” Specifically, CPUs operate such that information istransmitted at regular time intervals. Based on complementarymetal-oxide-semiconductor “CMOS” technology, silicon-based chips may bemanufactured with more than 5 billion transistors per die with featuresas small as 10 nm. Advances in CMOS technology have been parlayed intoadvances in parallel computing, which is used ubiquitously in cellphones and personal computers containing multiple processors.

However, as machine learning is becoming commonplace for numerousapplications including bioinformatics, computer vision, video games,marketing, medical diagnostics, online search engines, etc., traditionalCPUs are often not able to supply a sufficient amount of processingcapability while keeping power consumption low. In particular, machinelearning is a subsection of computer science directed to software havingthe ability to learn from and make predictions on data. Furthermore, onebranch of machine learning includes deep learning, which is directed atutilizing deep (multilayer) neural networks.

Currently, research is being done to develop direct hardwareimplementations of deep neural networks, which may include systems thatattempt to simulate “silicon” neurons (e.g., “neuromorphic computing”).Neuromorphic chips (e.g., silicon computing chips designed forneuromorphic computing) operate by processing instructions in parallel(e.g., in contrast to traditional sequential computers) using bursts ofelectric current transmitted at non-uniform intervals. As a result,neuromorphic chips require far less power to process information,specifically, artificial intelligence (AI) algorithms. To accomplishthis, neuromorphic chips may contain as much as five times as manytransistors as a traditional processor while consuming up to 2000 timesless power. Thus, the development of neuromorphic chips is directed toprovide a chip with vast processing capabilities that consumes far lesspower than conventional processors. Further, neuromorphic chips aredesigned to support dynamic learning in the context of complex andunstructured data.

When utilizing an analog array, values stored thereon may be susceptibleto leakage or drifting, which may cause errors in the output voltage.Specifically, current leakage may be introduced to the circuitry of theanalog array which may cause a voltage drift at the output. Providedherein are systems and methods for detecting current leakage or voltagedrift and in response, reprogramming the analog array.

SUMMARY

Disclosed herein are methods of performing a digital backed flashrefreshes. Although the description below contains many specificities,these should not be construed as limiting the scope of the invention butas merely providing illustrations of some of the presently preferredembodiments of the invention. Various other embodiments are possiblewithin its scope. Accordingly, the scope of the invention should bedetermined not by the embodiments illustrated, but by the appendedclaims and their equivalents.

In many embodiments, the method includes in response to the expirationof a timer, transmitting a signal from the timer to circuitry,responsive to receiving the signal, retrieving by the circuitry firstvalues stored in an analog array, and second values stored in a digitalnon-volatile memory, performing, by the circuitry, operations comprisinga comparison of the first values and the second values, analyzing, bythe circuitry, results of the comparison to determine whether an erroris greater than or equal to a predefined threshold, responsive todetermining the error is greater than or equal to the predefinedthreshold, initiating, by the circuitry, operations to reprogram theanalog array with the second values.

Further embodiments include the timer being configured to expire atperiodic intervals.

Additional embodiments include the intervals being selected from the setof one minute, two minutes, one hour, twenty-four hours or one week.

Still further embodiment include the intervals being dynamicallygenerated.

Still additional embodiments include the error including a differencebetween one or more of the first values and corresponding values of thesecond values.

More embodiments include the threshold including a predefinedpercentage.

Still more embodiments include the threshold percentages being betweenninety and one-hundred ten percent of the values stored in the digitalnon-volatile memory.

Still yet further embodiments include the error having a number of firstvalues being outside of the corresponding ranges stored in the digitalnon-volatile memory.

Still yet additional embodiments include the threshold having athreshold number of first values or a predefined threshold percentage offirst values.

Many more embodiments embodiment include reprogramming of the analogarray being performed as a background refresh.

A number of embodiments include the background refresh having operationscomprising programming a duplicate analog array with the second valuesstored in the digital non-volatile memory, and substituting the analogarray with the duplicate analog array.

Even more embodiments include the analog array having a predefinedcapacity, and the background refresh includes operations comprisingprogramming a unit memory bank of the analog array with a portion of thesecond values stored in the digital non-volatile memory, the unit memorybank and the portion of the second values having an equal size being afactor of a size of total of the analog array.

Another further embodiment includes the operations to reprogram beingexecuted by a microcontroller.

Another such embodiment includes the operations to reprogram beingexecuted by a state machine.

Yet further embodiments include the retrieval of the first values beforethe retrieval of the second values.

Yet additional embodiments include the retrieval of the second valuesbefore the retrieval of the first values.

Some embodiments include the retrieval of the first values and thesecond values concurrently.

Certain embodiments include the digital non-volatile memory beinginternal digital non-volatile memory.

Certain additional embodiments include the digital non-volatile memorybeing external digital non-volatile memory.

Further additional embodiments include the digital non-volatile memorybeing a combination of internal digital non-volatile memory and externaldigital non-volatile memory.

DRAWINGS

Embodiments of this disclosure are illustrated by way of example and notby way of limitation in the figures of the accompanying drawings, inwhich like references indicate similar elements and in which:

FIG. 1 provides a schematic illustrating a system 100 for designing andupdating neuromorphic integrated circuits “ICs” in accordance with someembodiments;

FIG. 2 provides a schematic illustrating an analog multiplier array inaccordance with some embodiments;

FIG. 3 provides a schematic illustrating an analog multiplier array inaccordance with some embodiments;

FIG. 4 provides a schematic illustrating a bias-free, two-quadrantmultiplier of an analog multiplier array in accordance with someembodiments;

FIG. 5 provides a block diagram of one exemplary embodiment of a systemfor reprogramming an analog flash/multiplier array including a schematicillustrating the analog flash/multiplier array; and

FIG. 6 provides an illustration of an exemplary method for reprogrammingvalues within an analog array in response to detecting an error withvalues stored within the analog array.

DESCRIPTION Terminology

In the following description, certain terminology is used to describefeatures of the invention. For example, in certain situations, the term“logic” may be representative of hardware, firmware and/or software thatis configured to perform one or more functions. As hardware, logic mayinclude circuitry having data processing or storage functionality.Examples of such circuitry may include, but are not limited orrestricted to a microprocessor, one or more processor cores, aprogrammable gate array, a microcontroller, a controller, an applicationspecific integrated circuit, wireless receiver, transmitter and/ortransceiver circuitry, semiconductor memory, or combinatorial logic.

The term “process” may include an instance of a computer program (e.g.,a collection of instructions, also referred to herein as anapplication). In one embodiment, the process may be included in one ormore threads executing concurrently (e.g., each thread may be executingthe same or a different instruction concurrently).

The term “processing” may include executing a binary or script, orlaunching an application in which an object is processed, whereinlaunching should be interpreted as placing the application in an openstate and, in some implementations, performing simulations of actionstypical of human interactions with the application.

The term “object” generally refers to a collection of data, whether intransit (e.g., over a network) or at rest (e.g., stored), often having alogical structure or organization that enables it to be categorized ortyped.

Lastly, the terms “or” and “and/or” as used herein are to be interpretedas inclusive or meaning any one or any combination. Therefore, “A, B orC” or “A, B and/or C” mean “any of the following: A; B; C; A and B; Aand C; B and C; A, B and C.” An exception to this definition will occuronly when a combination of elements, functions, steps or acts are insome way inherently mutually exclusive.

Referring now to FIG. 1, a schematic illustrating a system 100 fordesigning and updating neuromorphic ICs is provided in accordance withsome embodiments. As shown, the system 100 can include a simulator 110,a neuromorphic synthesizer 120, and a cloud 130 configured for designingand updating neuromorphic ICs such as neuromorphic IC 102. As furthershown, designing and updating neuromorphic ICs can include creating amachine learning architecture with the simulator 110 based on aparticular problem. As those skilled in the art can appreciate,cloud-based computer system may include, but are not limited to systemsthat can provide software as a service (“SaaS”), platform as a service(“PaaS”), and or infrastructure as a service (“IaaS”) resources. Theneuromorphic synthesizer 120 can subsequently transform the machinelearning architecture into a netlist directed to the electroniccomponents of the neuromorphic IC 102 and the nodes to which theelectronic components are connected. In addition, the neuromorphicsynthesizer 120 can transform the machine learning architecture into agraphic database system (“GDS”) file detailing the IC layout for theneuromorphic IC 102. From the netlist and the GDS file for theneuromorphic IC 102, the neuromorphic IC 102, itself, can be fabricatedin accordance with current IC fabrication technology. Once theneuromorphic IC 102 is fabricated, it can be deployed to work on theparticular problem for which it was designed. While the initiallyfabricated neuromorphic IC 102 can include an initial firmware withcustom synaptic weights between the nodes, the initial firmware can beupdated as needed by the cloud 130 to adjust the weights. Being as thecloud 130 is configured to update the firmware of the neuromorphic IC102, the cloud 130 is not needed for everyday use.

Neuromorphic ICs such as the neuromorphic IC 102 can be up to 100× ormore energy efficient than graphics processing unit (“GPU”) solutionsand up to 280× or more energy efficient than digital CMOS solutions withaccuracies meeting or exceeding comparable software solutions. Thismakes such neuromorphic ICs suitable for battery powered applications.

Neuromorphic ICs such as the neuromorphic IC 102 can be configured forapplication specific standard products “ASSP” including, but not limitedto, keyword spotting, speaker identification, one or more audio filters,gesture recognition, image recognition, video object classification andsegmentation, or autonomous vehicles including drones. For example, ifthe particular problem is one of keyword spotting, the simulator 110 cancreate a machine learning architecture with respect to one or moreaspects of keyword spotting. The neuromorphic synthesizer 120 cansubsequently transform the machine learning architecture into a netlistand a GDS file corresponding to a neuromorphic IC for keyword spotting,which can be fabricated in accordance with current IC fabricationtechnology. Once the neuromorphic IC for keyword spotting is fabricated,it can be deployed to work on keyword spotting in, for example, a systemor device.

Neuromorphic ICs such as the neuromorphic IC 102 can be deployed intoys, sensors, wearables, augmented reality “AR” systems or devices,mobile systems or devices, appliances, Internet of things “IoT” devices,or hearables.

Referring now to FIG. 2, a schematic illustrating an analog multiplierarray 200 is provided in accordance with some embodiments. Such ananalog multiplier array can be based on a digital NOR flash array inthat a core of the analog multiplier array can be similar to a core ofthe digital NOR flash array or the same as a core of the digital NORflash array. That said, at least select and read-out circuitry of theanalog multiplier array are different than a digital NOR array. Forexample, output current is routed as an analog signal to a next layerrather than over bit lines going to a sense-amp/comparator to beconverted to a bit. Word-line analogs are driven by analog input signalsrather than a digital address decoder. Furthermore, the analogmultiplier array 200 can be used in neuromorphic ICs such as theneuromorphic IC 102.

Since the analog multiplier array 200 is an analog circuit, input andoutput current values (or signal values) can vary in a continuous rangeinstead of simply on or off. This is useful for storing weights (akacoefficients) of a neural network as opposed to digital bits. Inoperation of certain embodiments, the weights can be multiplied by inputcurrent values 231, 232, 233, 234 to provide output current values thatare combined to arrive at a decision of the neural network. In manyembodiments, the input current values 231, 232, 233, 234 are provided byan input generator 230. Those skilled in the art will recognize thatsuch input current values can be generated or obtained from a variety ofdevices or other components within the system. Furthermore, storedcharge within a multiplier 210 can shift voltage on the floating gateand scales drain current by weight w_(i,j).

As those skilled in the art can appreciate, the analog multiplier array200 can utilize standard programming and erase circuitry to generatetunneling and erase voltages.

Referring now to FIG. 3, a schematic illustrating an analog multiplierarray 300 is provided in accordance with some embodiments. The analogmultiplier array 300 can use two transistors (e.g., a positivetransistor and a negative transistor) such as, but not limited to ametal-oxide semiconductor field effect transistor “MOSFET” orfield-effect transistor “FET” to perform a two-quadrant multiplicationof a signed weight (e.g., a positive weight or a negative weight) and anon-negative input current value. In many embodiments, the input currentvalues can be provided by a separate input generator 330. The inputgeneration of 330 can be similar to that of the input generator depictedin FIG. 2 in certain embodiments. If an input current value provided bythe input generator 330 is multiplied by a positive or negative weight,the product or output current value can respectively be either positiveor negative. A positively weighted product can be stored in a firstcolumn (e.g., column corresponding to I_(Out0+) in the analog multiplierarray 300), and a negatively weighted product can be stored in a secondcolumn (e.g., column corresponding to I_(Out0−) in the analog multiplierarray 300). By way of example and not limitation, I_(Out0+) andI_(Out0−) can be taken as a differential current output 310 that then isprovided to a plurality of current-sensing circuitry including, but notlimited to, current mirrors, charge integrators, and/or transimpedanceamplifiers. The foregoing differential outputs 310, 320 can providepositively and negatively weighted products or output signal values canbe taken as a differential current value to provide useful informationfor making a decision.

Because each output current from the positive or negative transistor iswired to ground and proportional to the product of the input currentvalue and the positive or negative weight, respectively, the powerconsumption of the positive or negative transistor is near zero when theinput current values or weights are at or near zero. That is, if theinput signal values are ‘0,’ or if the weights are ‘0,’ then no powerwill be consumed by the corresponding transistors of the analogmultiplier array 300. This is significant because in many neuralnetworks, often a large fraction of the values or the weights are ‘0,’especially after training. Therefore, energy is saved when there isnothing to do or going on. This is unlike differential pair-basedmultipliers, which consume a constant current (e.g., by means of a tailbias current) regardless of the input signal.

Referring now to FIG. 4, a schematic illustrating a bias-free,two-quadrant multiplier 400 of an analog multiplier array such as theanalog multiplier array 300 is provided in accordance with someembodiments. As previously set forth, because each output current fromthe positive transistor (e.g., positive output current M1 415 of thetwo-quadrant multiplier 400) or negative transistor (e.g., negativeoutput current M2 425 of the two-quadrant multiplier 400) isproportional to the product of the input current value and the positiveor negative weight, respectively, the power consumption of the positivetransistor 430 or negative transistor 440 is near zero when the inputcurrent values or weights are near zero. This is unlike differentialpair-based multipliers, which consume a constant current (e.g., by meansof a tail bias current) regardless of the input signal.

When programming a two-quadrant multiplier such as the bias-free,two-quadrant multiplier 400, it is common to erase each programmablecell (e.g., the cell including positive transistor M1 430 and the cellincluding negative transistor M2 440) thereof to set the cells to oneextreme weight value before setting each of the cells to its targetweight value. Extending this to a full array such as the analogmultiplier array 300, all of the programmable cells in the full arrayare set to one extreme weight value before setting each of the cells toits target weight value. When setting the cells to their desired weightvalues, a problem of overshoot exists if one or more of the cells is setwith a higher weight value than targeted: As a result, many or all ofthe cells in the full array must then be reset to the one extreme weightvalue before resetting the cells to their target weight values. However,the differential structure of each of the bias-free, two-quadrantmultipliers of the analog multiplier arrays provided herein allows forcompensating such overshoot by programming, thereby obviating thetime-consuming process of erasing and resetting all of the cells in anarray.

In an example of compensating for overshoot by programming, a negativevoltage input V_(i−) 410 and positive voltage input V_(i+) 420 of thetwo-quadrant multiplier 400 can be utilized for erasure to set the cellsto one extreme weight value. After erasing the cells, if negativevoltage input V_(i−) 410 is programmed with too large a weight value,positive voltage input V_(i+) 420 can be programmed with a larger weightvalue than initially targeted to compensate for the weight value ofnegative voltage input V_(i−) 410 and achieve the initially targetedeffect. Therefore, the differential structure can be exploited tocompensate for programming overshoot without having to erase any one ormore cells and start over.

Referring now to FIG. 5, a block diagram of one exemplary embodiment ofa system for reprogramming an analog flash/multiplier array including aschematic illustrating the analog flash/multiplier array is shown. Thesystem 500 includes the analog flash/multiplier array (“analog array”)502, a timer 504, read-out circuitry 506 and a digital non-volatilememory 508. The analog array 502 may be comprised of a NOR flash arrayincluding a plurality of floating-gate transistors that store aplurality of values (as used herein, the use of the term “NOR” refers toBoolean logic). The floating-gate transistors may serve a dual-purpose:(i) conduct a current that is the function of an input, and (ii) storethe corresponding values. In some embodiments, the values stored by theanalog array 502 may be weights used within a neural network. In otherembodiments, the values may be used as parameters in logic functionsthat perform mathematical operations and/or computations (e.g., a filtersuch as coefficients in an infinite impulse response (IIR) filter and/ora finite impulse response (FIR) filter). In yet other embodiments, thevalues may be used as parameters in a programmable equalizer.

The values may be maintained within the circuitry comprising the analogarray 502 based on the insulative properties of the dielectricsurrounding the floating-gate transistors of the analog array 502.Specifically, a charge may be added to or removed from the floating-gatearrays by inducing, for example, electric fields within a predetermineddistance from the floating-gate transistors. Under “typical” conditions,e.g., no exposure of the floating-gate transistors to an electric fieldabove a predefined strength (i.e., charge), the charge residing on thefloating-gate transistors will remain for a significant amount of time.

Although not shown, the analog array 502 may be coupled to an array ofinput drivers that provide analog input signals. In certain embodiments,these may be similar to the input generators depicted in FIG. 2 and/orFIG. 3. Additionally, the analog array may be coupled to at least oneoutput sense circuit configured to receive (e.g., read) output, e.g.,one or more currently values, and provide the output as input to asubsequent processing stage. For example, the output of the analog array502 may be considered a “feature vector” that is an input to a firstlayer of a neural network (e.g., the feature vector may be a set ofimage pixels, a filtered output from filtering an audio signal, etc.).

Still referring to FIG. 5, the digital non-volatile memory 508 may be,inter alia, resistive random-access memory “RRAM” orsilicon-oxide-nitrate-oxide-silicon “SONOS” memory. In otherembodiments, other types of well-known non-volatile memory may beutilized, but are not limited to including read-only memory “ROM”,non-volatile random-access memory “NVRAM” mechanical storage (e.g., harddisk drive, optical disc drive), etc. In a number of embodiments, thedigital non-volatile memory 508 may be onboard memory within the system.In additional embodiments, the digital non-volatile memory 508 may beexternal in relation to the system. In still more embodiments, thedigital non-volatile memory 508 may comprise a mixture of both onboardand external memory. In certain embodiments, the digital memory maycomprise volatile memory instead of non-volatile memory including, butnot limited to, static RAM “SRAM” and/or dynamic RAM “DRAM.” In stillmore embodiments, the system 500 may include a mixture of both volatileand non-volatile memory 508. Those skilled in the art will recognizethat any suitable memory technologies may be utilized as a substitutefor either the volatile or non-volatile memory in the system 500 and maybe located either internally and/or externally based on the particularrequirements of the application.

The timer 504 is configured to transmit a signal to the read-outcircuitry 506 at predetermined intervals (e.g., periodically). Incertain embodiments, the signal may include, but is not limited tovoltage signals, current signals, and/or logic signals. Exampleintervals may include, but are not limited or restricted to, one minute,two minutes, one hour, 24 hours, one week, etc. Additionally, theintervals at which the timer 504 can transmit a signal may bedynamically adjustable (i.e., reprogrammed to be a different duration).In additional embodiments, input (e.g., from a human analyst) may causea signal to be transmitted to the read-out circuitry 506. The timer 504transmits a signal to the read-out circuity 506 to initiate operationscausing the read-out circuitry 506 to retrieve values stored in theanalog array 502. Additionally, the read-out circuitry 502 retrievesvalues stored in the digital non-volatile memory 508. Subsequently, theread-out circuitry 502 may perform a comparison 510 of the valuesretrieved from the analog array 502 and the values retrieved from thedigital non-volatile memory 508 to determine whether any degradation ofthe values stored by the analog array 502 has occurred. The valuesstored within the digital non-volatile memory 508 may be a set of rangesor a set of specific values. For example, when the values stored in thedigital non-volatile memory 508 are a set of ranges, the comparison 510may determine whether the values retrieved from the analog array 502 arewithin the stored ranges. In such an embodiment, the threshold used indetermining whether to initiate a reprogramming process of the analogarray 502 may be a predefined threshold number such that when the numberof values retrieved from the analog array 502 that are outside of thecorresponding ranges meets or exceeds the predefined threshold number,the reprogramming process is initiated.

In an alternative example, when the values stored in the digitalnon-volatile memory 508 may be a set of specific values. In such anexample, the comparison 510 may determine whether the values retrievedfrom the analog array 502 are within specific threshold percentages(e.g., 90-110%) of the values stored in the digital non-volatile memory508. In such an embodiment, the threshold used in determining whether toinitiate a reprogramming process of the analog array 502 may be apredefined threshold percentage range such that when one or more valuesretrieved from the analog array 502 are outside of the correspondingranges meets or exceeds the predefined threshold percentage, thereprogramming process can be initiated.

When the comparison 510 results in an error above a predefinedthreshold, the read-out circuitry 506 may initiate an operation toreprogram the analog array 502 using the values stored in the digitalnon-volatile memory 508. In some embodiments, the error includes adifference between one or more of the values retrieved from the analogarray and the corresponding values stored in the digital non-volatilememory. In such embodiments, the threshold includes a predefinedpercentage. In other embodiments, the error includes a number of valuesretrieved from the analog array outside of the corresponding rangesstored in the digital non-volatile memory. In such embodiments, thethreshold includes a predefined number of values or a predefinedpercentage of the values.

Referring now to FIG. 6, an illustration of an exemplary method forreprogramming values within an analog array in response to detecting anerror with values stored within the analog array is shown. Each blockillustrated in FIG. 6 represents an operation performed in the method600 of reprogramming values with an analog array in response todetecting an error with the values stored therein. The method 600 startsat block 602 and proceeds to block 604 when an expiration of a timer hasoccurred. As discussed above, the timer may be configured to expire atperiodic intervals. When the timer expires (yes at block 602), a signalis transmitted to read-out circuitry such as, for example, the system500 illustrated in FIG. 5, which can result in the activation of theread-out circuitry to retrieve values stored in an analog array such asthe array 502 depicted in FIG. 5 (block 604).

Additionally, in response to receiving the signal as a result of theexpiration of the timer, many embodiments of the read-out circuitryretrieve values stored in a digital non-volatile memory (block 606). Itshould be noted that blocks 604 and 606 do not have to be performed in aparticular order. For example, the operations of blocks 604 and 606 maybe performed as illustrated in FIG. 6, and in a second embodiment, theoperations of block 606 may be performed prior to the performance of theoperations of block 604. In yet another embodiment, the operations ofblocks 604 and 606 may be performed concurrently (at least partiallyoverlapping in time).

In response to the completion of the operations of blocks 604 and 606,the read-out circuitry can perform a comparison of the values retrievedfrom the analog array and the values retrieved from the digitalnon-volatile memory (block 608). In a number of embodiments, theread-out circuitry analyzes the results of the comparison to determinewhether an error greater than or equal to a predefined threshold exists(e.g., whether the values stored in the analog array have suffered fromvoltage drift or current leakage). In response to the existence of anerror above the predefined threshold (yes at block 608), the read-outcircuitry can initiate operations to automatically reprogram the analogarray with the values stored in the digital non-volatile memory (block610). In one embodiment, a microcontroller and/or a state machine may beincluded to execute the reprogramming of the analog array as well as thetimer and read-out circuitry as depicted in FIG. 5. In some embodiments,the analog array, the timer, the read-out circuitry, and amicrocontroller and/or a state machine are included on an integratedcontroller.

Some advantages of utilizing an analog array, e.g., such as the analogarray 502 of FIG. 5, instead of digital memory to supply input to afirst layer of a neural network include, but are not limited orrestricted to, increased speed, increased density (i.e., more values,e.g., weights, stored in a given area of an IC), a lower energy cost inprocessing the values to provide output (e.g., in an analog array, thestorage element and the multiplier are the same transistor so there isno energy or time cost to move data from memory to the multiplier),and/or improved power efficiency.

Additionally, in some embodiments, a memory refresh process (e.g.,reprogramming the analog array based on the digital memory) may be madeinvisible to the user by performing a refresh that occurs in thebackground from the user's perspective (“a background refresh”). Byperforming a memory refresh as a background refresh, the user experienceis uninterrupted (or negligibly interrupted). In one such embodiment, aduplicate of the active analog memory may be re-programmed such that theactive analog memory is substituted (e.g., exchanged) with theduplicate. In a second such embodiment, the active analog memory may bedivided into unit memory banks, e.g., into N unit memory banks (whereinN≥1). For example, each unit memory bank may have the same storagecapacity such that each unit memory bank would require 1/N of the totalmemory storage capability (e.g., N being a factor of the total size ofthe active analog memory). Utilizing one additional redundant unitmemory bank would then result in a refresh of the entire active analogmemory in N cycles. In the second embodiment, the analog memory overheadrequired for background updates is limited to 1/N of the total activeanalog memory content.

In the foregoing description, the invention is described with referenceto specific exemplary embodiments thereof. It will, however, be evidentthat various modifications and changes may be made thereto withoutdeparting from the broader spirit and scope of the invention as setforth in the appended claims.

What is claimed is:
 1. A method, comprising: transmitting a signal froma timer to circuitry; responsive to receiving the signal, retrieving bythe circuitry: first values stored in an analog array; and second valuesstored in a digital memory; performing, by the circuitry, one or moreoperations comprising at least a comparison of the first values and thesecond values; analyzing, by the circuitry, results of the comparison todetermine whether a result is greater than or equal to a predefinedthreshold; initiating, by the circuitry, operations to reprogram theanalog array with the second values based on the analyzed results. 2.The method of claim 1, wherein the transmission of a signal from thetimer is responsive to an expiration of the timer.
 3. The method ofclaim 2, wherein the timer is configured to expire at one or morepredetermined intervals.
 4. The method of claim 3, wherein the intervalsare selected from the set comprising: one minute, two minutes, one hour,twenty-four hours, or one week.
 5. The method of claim 3, wherein theintervals are dynamically generated.
 6. The method of claim 1, whereinthe determined result is an error.
 7. The method of claim 6, wherein thereprogramming operations are responsive to determining the error isgreater than or equal to the predefined threshold.
 8. The method ofclaim 7, wherein the error includes a difference between one or more ofthe first values and corresponding values of the second values.
 9. Themethod of claim 6, wherein the error includes a number of first valuesbeing outside of corresponding ranges stored in the digital memory. 10.The method of claim 9, wherein the threshold includes a threshold numberof first values or a predefined threshold percentage of first values.11. The method of claim 1, wherein the threshold includes a predefinedpercentage.
 12. The method of claim 11, wherein threshold percentagesare between ninety and one-hundred ten percent of the second valuesstored in the digital memory.
 13. The method of claim 1, whereinreprogramming the analog array is performed as a background refresh. 14.The method of claim 13, wherein the background refresh includesoperations comprising: programming a duplicate analog array with thesecond values stored in the digital memory; and substituting the analogarray with the duplicate analog array.
 15. The method of claim 13,wherein the analog array has a predefined capacity, and wherein thebackground refresh includes operations comprising: programming a unitmemory bank of the analog array with a portion of the second valuesstored in the digital memory, the unit memory bank and the portion ofthe second values having an equal size being a factor of a total size ofthe analog array.
 16. The method of claim 1, wherein the operations toreprogram are executed by a microcontroller.
 17. The method of claim 1,wherein the operations to reprogram are executed by a state machine. 18.The method of claim 1, wherein the retrieval of the first values occursbefore the retrieval of the second values.
 19. The method of claim 1,wherein the retrieval of the second values occurs before the retrievalof the first values.
 20. The method of claim 1, wherein the retrieval ofthe first values and the second values occurs concurrently.